package com.sanyue.springboot.bean;

import lombok.*;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 配置绑定：将application.properties中的指定的k-v和JavaBean绑定
 * lombook工具的使用
 * @author: Guan
 **/
@Component
@ConfigurationProperties(prefix = "people01")

//lombok开发工具：简化javabean开发
// @ToString  //在编译时，生成toString方法，默认情况下，会生成一个无参构造器
/**
 *   1.Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}.
 *   2.说明：@Data注解等价使用了如上注解
 *   3.@RequiredArgsConstructor（用的不多）
 */
@Data
// 前端获取数据需要@Getter，后端需要@Setter
// @Getter
// @Setter
/**
 *  1.添加该注解，在编译时候，会生成无参构造器
 *  2.在默认情况下，也会生成一个无参构造器
 *  3.当使有其他构造器生成时，仍然需要无参构造器时，就需要添加该注解
 *  4.因为使用全参构造器时，默认不再生成无参构造器（有参覆盖了无参构造器）
 */
// @NoArgsConstructor


/**
 * 在编译时生成全参构造器
 * 如果使用SpringMVC注解（Component，Service等），单一使用该注解会报错
 * 理解：Component：Spring注入容器，底层反射需要调用无参构造方法，所以需要无参构造函数
 * 解决方式：
 *  1.在类中手写一个无参构造器
 *  2.添加@NoArgsConstructor
 *  注意：这时也会爆红，但无需注意
 */
// @AllArgsConstructor


public class People {
    private Integer age;
    private Double salary;
    private String name;

    // public People() {
    // }
    //
    // public People(Integer age, Double salary, String name) {
    //     this.age = age;
    //     this.salary = salary;
    //     this.name = name;
    // }
    //
    // public Integer getAge() {
    //     return age;
    // }
    //
    // public void setAge(Integer age) {
    //     this.age = age;
    // }
    //
    // public Double getSalary() {
    //     return salary;
    // }
    //
    // public void setSalary(Double salary) {
    //     this.salary = salary;
    // }
    //
    // public String getName() {
    //     return name;
    // }
    //
    // public void setName(String name) {
    //     this.name = name;
    // }

    // @Override
    // public String toString() {
    //     return "People{" +
    //             "age=" + age +
    //             ", salary=" + salary +
    //             ", name='" + name + '\'' +
    //             '}';
    // }
}
